/* uses https://github.com/wolkykim/qlibc/blob/master/tests/qunit.h */
#include "qunit.h"

#include "lista.h"
#include <stdio.h>

QUNIT_START("Test lista.c");

TEST("Test wstaw 3 inty") {
  Lista li;
  
  ListaInicjalizacja(&li);
  ASSERT_TRUE(ListaJestPusta(&li)); /* zainicjowana lista jest pusta */
  ListaDodajOstatniInt(&li, 1, "x1");
  ListaDodajOstatniInt(&li, 5, "x2");
  ListaDodajOstatniInt(&li, -9, "x3");
  ASSERT_FALSE(ListaJestPusta(&li)); /* niepusta lista po dodaniu */
  //printf("\nli.pFirst->tw.w.i = %d\n", li.pFirst->tw.w.i);
  //printf("\nli.pFirst->pNext->pNext->tw.w.i = %d\n", li.pFirst->pNext->pNext->tw.w.i);
  ASSERT_EQUAL_INT(li.pFirst->tw.w.i, 1);
  ASSERT_EQUAL_INT(li.pFirst->pNext->tw.w.i, 5);
  ASSERT_EQUAL_INT(li.pFirst->pNext->pNext->tw.w.i, -9);
  //ListaDrukuj(&li);
  ListaUsunWszystkie(&li);
  ASSERT_TRUE(ListaJestPusta(&li)); /* po usunieciu lista jest pusta */
}

TEST("Test wstaw 1 int i 2 floaty") {
  Lista li;
  
  ListaInicjalizacja(&li);
  ListaDodajOstatniInt(&li, 1, "i1");
  ListaDodajOstatniFloat(&li, -4, "f2");
  ListaDodajOstatniFloat(&li, 0.125, "f3");
  ASSERT_EQUAL_INT(li.pFirst->tw.w.i, 1);
  ASSERT_EQUAL_INT(li.pFirst->pNext->tw.w.f, -4);
  ASSERT_EQUAL_INT(li.pFirst->pNext->pNext->tw.w.f, 0.125);

  //ListaDrukuj(&li);
  ListaUsunWszystkie(&li);
  ASSERT_TRUE(ListaJestPusta(&li)); /* po usunieciu lista jest pusta */
}


QUNIT_END();

// gcc lista-qunitTests.c lista.c typwartosc.c -o test.exe